<?php
	/* Manipulação de dados */
	
	function instituicao_inserir_executa_query()
	{
		extract($_POST); // Coloco os valores dos campos do formulário em variavéis
		$data = data_BD($data);
		$materia = mysql_real_escape_string($materia);
			$sql = "INSERT INTO instituicao (id,nome) VALUES (DEFAULT,'$nome')";
		$sucesso = executa_query($sql);
		if($sucesso)
		{
			colocaMensagemSession('sucesso', 'Instituição inserido com sucesso');
			header('Location: ./');
			return true;
		}
		return 'Falha ao inserir a linha atual';
	}
	
	function instituicao_alterar_executa_query()
	{
		GLOBAL $instituicao_id; 
		extract($_POST); // Coloco os valores dos campos do formulário em variavéis
		$data = data_BD($data);
		$materia = mysql_real_escape_string($materia);
			$sql = "UPDATE instituicao SET nome = '$nome' WHERE id = $instituicao_id;";
		$sucesso = executa_query($sql);
		if($sucesso)
		{
			colocaMensagemSession('sucesso', 'Instituição alterado com sucesso');
			header('Location: ./');
			return true;
		}
		return 'Falha ao alterar a linha atual';
	}
	
	function instituicao_excluir_executa_query()
	{
		$instituicao_id = $_GET['id'];
		$sucesso = executa_query("DELETE FROM instituicao WHERE id=$instituicao_id;");
		if($sucesso)
		{
			colocaMensagemSession('sucesso', 'Instituição excluído com sucesso');
			header('Location: ./');
		}
		else
		{
			colocaMensagemSession('erro', 'Falha ao excluir a linha atual');
			header('Location: ./');
		}
		return $sucesso;
	}
	
	/* Validação de dados */

	function instituicao_inserir_validacao()
	{
		if(!notEmpty($_POST["nome"]))
			$erros["nome"] = 'O campo nome não pode estar vazio';

			
		return $erros;
	}
	
	function instituicao_alterar_validacao()
	{
	
		if(!notEmpty($_POST["nome"]))
			$erros["nome"] = 'O campo nome não pode estar vazio';

			
		return $erros;
	}
	
	/* Permissão de acesso */
	
	/**
	 * Cria uma função que verifica apenas se foi passado um id e retorna o registro desse id, se $retorna_registro for igual a true
	 * @param $retorna_registro Indica se o registro do id passado por $_GET deve ser retornado (default: true)
	 * @return Retorna false se não foi passado um id por $_GET. Caso tenha sido passado um id válido: se $retorna_registro = true então retorna o registro desse id, se não retornará true 
	 */
	function instituicao_dados_get($retorna_registro = true)
	{
		if(!checa_id_passado()) // Se não foi passado um id por $_GET
		{
			colocaMensagemSession('erro', 'Não foi passado os parâmetros corretos para a página de alterar.');
			header('Location: ./'); // redireciona para a index.php (o gerenciar)
			return false;
		}
		
		if($retorna_registro){
			return executa_query("SELECT * FROM instituicao WHERE id = ".$_GET['id'].";", true); // Retorna o registro do id passado por $_GET
		}
		
		return true;
	}
	
	function instituicao_alterar_dados_get()
	{
		return instituicao_dados_get();
	}
	
	function instituicao_visualizar_dados_get()
	{
		return instituicao_dados_get();
	}
	
	function instituicao_excluir_dados_get()
	{
		return instituicao_dados_get(false);
	}
	
	/* Manipulação da tabela em index.php */
	
	function instituicao_index_cria_dados()
	{
		GLOBAL $limit, $range, $orderBy, $order, $pagina, $num_linhas; // Variáveis que tem que ficar disponíveis na página index.php
		
		// Pega os valores do $_GET para montar a tabela (os valores são orderBy, order e pagina)
		if(isset($_GET['orderBy']))
			$orderBy = $_GET['orderBy'];
		if(isset($_GET['order']))
			$order = $_GET['order'];
		if(isset($_GET['pagina']))
			$pagina = $_GET['pagina'];
		
		// Pego o número de linhas da tabela instituicao
		$num_linhas = executa_query('SELECT COUNT(*) as num_linhas FROM instituicao;', true);
		
		if(is_numeric($pagina) && ($pagina >= 0) && ($pagina <= $num_linhas / $limit)) {
			$offset = $limit * $pagina;
		} else {
			$offset = 0;
		}
		
		// Retorno as linhas a serem escritas na tabela
		return executa_query("SELECT * FROM instituicao ORDER BY $orderBy $order  LIMIT $limit OFFSET $offset;");
	}
	
	function instituicao_index_escreve_paginacao()
	{
		GLOBAL $limit, $range, $orderBy, $order, $pagina, $num_linhas; // Variáveis que tem que ficar disponíveis na página index.php
		
		// $pages recebe o número de páginas
		$pages = ceil($num_linhas / $limit);
		// $page recebe a página atual no formato de representação
		$page = $pagina + 1;
		
		// Testa se o número de registros é maior que o limit para mostrar ou não as páginas
		if($num_linhas > $limit) {
			// Primeira página
			if($pagina > 1)
				echo '<a href="./?orderBy='. $orderBy .'&amp;order='. $order .'&amp;pagina='. 0 .'">Primeira</a>';
			
			// Página anterior
			if($pagina >= 1)
				echo '<a href="./?orderBy='. $orderBy .'&amp;order='. $order .'&amp;pagina='. ($pagina - 1) .'" class="ant">Anterior</a>';
			
			// Páginas numeradas com range
			for($i = ($page - $range); $i <= ($page + $range); $i++) {
				if($i > 0 && $i <= $pages){
					if($i == $page)
						echo '<a href="" class="paginaAtual">'.$i.'</a>';
					else
						echo '<a href="./?orderBy='. $orderBy .'&amp;order='. $order .'&amp;pagina='. ($i - 1) .'">'. $i .'</a>';
				}
			}
			
			// Próxima página
			if($pagina <= $pages - 2)
				echo '<a href="./?orderBy='. $orderBy .'&amp;order='. $order .'&amp;pagina='. ($pagina + 1) .'" class="prox">Próxima</a>';
			
			// Última página
			if($pagina < $pages - 2)
				echo '<a href="./?orderBy='. $orderBy .'&amp;order='. $order .'&amp;pagina='. ($pages - 1) .'">Última</a>';
		}
	}
	
	
?>